package org.example.domain.query;

import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.metadata.OrderItem;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

@Data
@ApiModel(description = "分页查询实体")
public class PageQuery {
    @ApiModelProperty("页码")
    private Integer current = 1;
    @ApiModelProperty("每页显示条数")
    private Integer size = 5;
    @ApiModelProperty("排序字段")
    private String sortBy;
    @ApiModelProperty("是否升序")
    private Boolean isAsc = true;
    @ApiModelProperty("租户id")
    private Long tenantId;
    
    public <T> Page<T> toMpPage(OrderItem ... items) {
        // 1.分页条件
        Page<T> p = Page.of(current, size);
        // 2.排序条件
        // 2.1.先看前端有没有传排序字段
        if (StrUtil.isNotBlank(sortBy)) {
            p.addOrder(new OrderItem().setColumn(sortBy).setAsc(isAsc));
            return p;
        } else if (items != null){// 2.2.再看有没有手动指定排序字段
            p.addOrder(items);
        }
        return p;
    }
    
    /**
     * 排序字段和排序方式
     * @param defaultSortBy 排序字段
     * @param isAsc 排序方式
     */
    public <T> Page<T> toMpPage(String defaultSortBy, boolean isAsc){
        return this.toMpPage(new OrderItem().setColumn(defaultSortBy).setAsc(isAsc));
    }
}
